#include <iostream>
using namespace std;
const int N=1010;
int dp[N][N];
int main() {
    int n,m;
    cin >> n >> m;
    string s1,s2;
    cin >> s1 >> s2;
    // for(int i=1;i<=s1.size();i++)
    // {
    //     for(int j=1;j<=s2.size();j++)
    //     {
    //         dp[i][j]=dp[i-1][j-1];
    //         if(s1[i-1]==s2[j-1]){
    //             dp[i][j]+=1;
    //         }else{
    //             dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
    //         }
    //     }
    // }
    for(int i=1;i<=s1.size();i++)
    {
        for(int j=1;j<=s2.size();j++)
        {
            dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
            if(s1[i-1]==s2[j-1]){
                dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
            }
        }
    }
    cout << dp[s1.size()][s2.size()];
    return 0;
}